﻿using NP.BPMReportPlatform.FlowManagement.Dto;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;

namespace NP.BPMReportPlatform.FlowManagement
{
    /// <summary>
    /// 流程管理接口服务
    /// </summary>
    public interface IFlowManagementAppService : IApplicationService
    {
        ///// <summary>
        ///// 获取流程分类
        ///// </summary>
        ///// <param name="input"></param>
        ///// <returns></returns>
        //Task<List<GetFlowCategoryOutput>> GetFlowCategory(GetFlowCategoryInput input);

        /// <summary>
        /// 获取流程分类
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<List<GetFlowCategoryOutput>> GetFlowCategoryNew(GetFlowCategoryInput input);

        /// <summary>
        /// 查询数据
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PagedResultDto<GetFlowOutput>> GetAllAsync(GetFlowInput input);

        /// <summary>
        /// 导出数据
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<List<GetFlowOutput>> ExportAllAsync(GetFlowInput input);

        /// <summary>
        /// 查询框架订单数据
        /// </summary>
        /// <param name="input"></param>
        /// <param name="workNumbers"></param>
        /// <returns></returns>
        Task<PagedResultDto<GetFlowOutput>> GetKJDDAllAsync(GetFlowInput input, List<string> workNumbers);

        /// <summary>
        /// 导出框架订单数据
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<List<GetFlowOutput>> ExportKJDDAllAsync(GetFlowInput input);

        /// <summary>
        /// 框架订单作废
        /// </summary>
        /// <param name=""></param>
        /// <returns></returns>
        Task FrameOrderCancelAsync(FrameOrderCancelInput input);

        /// <summary>
        /// 车辆交通费报表作废需传true
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task FrameOrderCancelNoSAPAsync(FrameOrderCancelInput input);

        /// <summary>
        /// 流程作废
        /// </summary>
        /// <param name="instanceNumber"></param>
        /// <returns></returns>
        Task FlowCancelAsync(FlowCancelInput input);

        /// <summary>
        /// 流程催办
        /// </summary>
        /// <param name="instanceNumber"></param>
        /// <returns></returns>
        Task FlowUrgingAsync(FlowUrgingInput input);

        /// <summary>
        /// 获取新BPM待办
        /// </summary>
        /// <returns></returns>
        Task<List<GetBPMNEWToDoOutput>> GetBPMNEWToDoAsync();

        /// <summary>
        /// 依据FlowCancelTask表数据 批量作废流程
        /// </summary>
        /// <returns></returns>
        Task FlowBatchCancelAsync(FlowBatchCancelInput input);

        /// <summary>
        /// 获取流程实例状态
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<List<GetProcessInstanceStatusOutput>> GetProcessInstanceStatus(List<GetProcessInstanceStatusInput> input);

        /// <summary>
        /// 获取BPM已办
        /// </summary>
        /// <returns></returns>
        Task<List<GetBPMDoneOutput>> GetBPMDoneAsync(GetBPMDoneInput input);

    }
}
